#include "Observateur.h"

Observateur::Observateur (Point &positionOeil,  Point &destination, Vecteur &normale, float angle, int tailleEcran) :
	destination(destination),  angle(angle), positionOeil(positionOeil) {

		
    const float PI = 4.0f * atanf(1.0);

	
	Vecteur z(positionOeil, destination);
	z.normer();
	normale.normer();
	Vecteur y = z.pVectoriel(normale);
	normale = y.pVectoriel(z);
	normale.normer();
	y = z.pVectoriel(normale);
	y.normer();
	focale = tailleEcran / (float)(2 * tan(angle*PI/360.0f)); 

	observateurVersGlobal = Matrice(normale, y, z, positionOeil);
		
	globalVersObservateur = observateurVersGlobal.transpose();
}

	
Observateur& Observateur::operator=(Observateur oth)
{
	globalVersObservateur = Matrice(oth.globalVersObservateur);
	observateurVersGlobal = Matrice(oth.observateurVersGlobal);
	destination = Point(oth.destination);
	positionOeil = Point(oth.positionOeil);
	focale = oth.focale;
	angle = oth.angle;

	return *this;
}